package copyengine.ui.display.ph
{
    import copyengine.infoTree.meta.CESPlaceHolderMeta;
    import copyengine.ui.infoTree.buildTree.InfoTreeBuildUtils;

    import starling.display.Quad;
    import starling.display.Sprite;

    /**
     * PH是一个空的Sprite 内置一个Quad 从而使得该Sp有x y width height信息
     *
     * 在显示树中用于占位操作, 比如好友头像处理 运行时需要动态替换相应的图片
     * 则在FLA中先用一个PH占位,构建好显示树以后 后期再取得该MC进行相应的替换
     */
    public class CEPlaceHolder extends Sprite
    {
        private var mMeta:CESPlaceHolderMeta;
        private var mChildQuad:Quad;

        public function CEPlaceHolder(_meta:CESPlaceHolderMeta)
        {
            super();
            mMeta = _meta;
            mChildQuad = new Quad(meta.width, meta.height, 0xFFFFFF);
            mChildQuad.visible = false;
            mChildQuad.x = meta.offsetX;
            mChildQuad.y = meta.offsetY;
            this.addChild(mChildQuad);
            InfoTreeBuildUtils.setBasicInfoByMeta(meta, this);
        }

        public function get meta():CESPlaceHolderMeta {return mMeta;}


        /**
         * 返回一个坐标及大小和PH的meta中定义一样的Quad, 因为PH有可能不在显示列表中
         * 此时需要通过该函数返回的Quad来读取PH相应的信息
         */
        public static function getPHQuadByMeta(_meta:CESPlaceHolderMeta, _resultQuad:Quad = null):Quad
        {
            if (_resultQuad == null) {
                _resultQuad = new Quad(1, 1);
            }
            _resultQuad.width = _meta.width;
            _resultQuad.height = _meta.height;
            _resultQuad.visible = false;
            _resultQuad.x = _meta.offsetX;
            _resultQuad.y = _meta.offsetY;
            InfoTreeBuildUtils.setBasicInfoByMeta(_meta, _resultQuad);
            return _resultQuad;
        }

    }
}
